Redundant, low-latency digital audio transmission

ABSTRACT

Methods and systems for converting an audio signal into a stream of digital audio packets are presented. An example converter device may include a receiver, a digital audio encoder, a digital audio packetizer, and a transmitter. The receiver may receive an audio signal. The digital audio encoder may encode the audio signal into a stream of digital audio values. The digital audio packetizer may generate a stream of digital audio data packets from the stream of digital audio values. Each of the digital audio data packets may include a current digital audio value and at least one previous digital audio value of the stream of digital audio values. The transmitter may transmit the stream of digital audio data packets to a receiving device.

RELATED APPLICATIONS

This application claims the benefit of priority of U.S. ProvisionalApplication No. 61/674,697, titled “REDUNDANT, LOW-LATENCY DIGITAL AUDIOTRANSMISSION,” filed Jul. 23, 2012, and which is hereby incorporatedherein by reference in its entirety.

TECHNICAL FIELD

This application relates generally to transmission of digital audio dataand, more specifically, to systems and methods for redundant,low-latency transmission of one or more digital audio streams.

BACKGROUND

In many environments, any delay or latency that results from thegeneration and transmission of digital audio data for presentation orplayback to a listener is not problematic. For example, when an audioCompact Disc (CD) is played, several hundreds of milliseconds may elapseduring the time period that the digital audio data is read from the CD,a corresponding analog signal is derived from the digital data andsubsequently amplified, and acoustic sound waves are generated from theamplified audio signal. However, such a delay is generally notdetectable by the listener, as the listener has no reference point intime with which to detect that delay.

In other examples, such as when audio is presented in conjunction withcorresponding video, as is typical with television and Digital VideoDisc (DVD) presentations, latency is more of a concern, assynchronization of the audio with its corresponding video is necessaryfor a viewer to properly experience the resulting audio/videopresentation. In that case, the digital audio and video data generallyare received by a single device, such as a television, set-top box, DVDplayer, and the like. Further, the video and audio data are often markedwith timestamp information so that the receiving device may align thevideo and audio data appropriately prior to forwarding the data to anoutput device, such as a television, for presentation to the user. Thus,any potential relative delay in the audio or video data of anaudio/video presentation is adjusted and eliminated.

However, in some environments, such an adjustment may prove to be moredifficult. For example, audio associated with an audio/videopresentation that is being provided by a television or similar videopresentation device may be retransmitted to one or more remoteaudio-receiving devices to provide the audio more directly to one ormore listeners. Such retransmission is likely to introduce an additionallatency into the audio signal by the time the audio reaches thelisteners, thus likely causing the resulting sound waves to lag thevideo portion of the presentation as experienced by the user by anunsatisfactory amount.

BRIEF DESCRIPTION OF THE DRAWINGS

Some embodiments are illustrated by way of example and not limitation inthe figures of the accompanying drawings in which:

FIG. 1 is a block diagram illustrating an example of an audio converterdevice;

FIG. 2 is a flow diagram illustrating an example method of operating theexample audio converter device of FIG. 1;

FIGS. 3A and 3B are block diagrams illustrating other examples of audioconverter devices;

FIG. 4A is a graphical depiction of an example digital audio data packettransmitted by the audio converter devices of FIGS. 3A and 3B;

FIG. 4B is a timing diagram of current and replicant audio valuespresented in the example digital audio data packet of FIG. 4A;

FIG. 5 is a depiction of an example setup file employed by the audioconverter device of FIG. 3B;

FIG. 6 is a depiction of an example beacon file employed by the audioconverter device of FIG. 3B;

FIG. 7 is a block diagram illustrating an example audio distributionsystem including a plurality of audio converter devices and an accessdevice;

FIG. 8 is a block diagram illustrating an example access deviceimplementable in the audio distribution system of FIG. 7;

FIG. 9 is a flow diagram illustrating an example method of operating theexample access device of FIG. 8;

FIG. 10 is a block diagram illustrating an example mobile communicationdevice implementable in the audio distribution system of FIG. 7;

FIG. 11 is a block diagram illustrating example modules implementable ascontrol logic for the example mobile communication device of FIG. 10;

FIG. 12 is a flow diagram illustrating an example method of operatingthe example mobile communication device of FIG. 10 to provide a selecteddigital audio stream to a user;

FIG. 13 is a graphical representation of example information provided ona display of an example mobile communication device;

FIGS. 14A and 14B present a flow diagram illustrating operations ofvarious execution threads executing within the example mobilecommunication device of FIG. 10 for processing a received digital audiopacket stream; and

FIG. 15 is a diagrammatic representation of a machine in the exampleform of a computer system within which a set of instructions for causingthe machine to perform any one or more of the methodologies discussedherein may be executed.

DETAILED DESCRIPTION

Example methods and systems for digital audio transmission arediscussed. In the following description, for purposes of explanation,numerous specific details are set forth in order to provide a thoroughunderstanding of example embodiments. It will be evident, however, toone skilled in the art that the present subject matter may be practicedwithout these specific details. It will also be evident that the venuesand environments described herein in which digital audio transmissionmay occur are not limited to the examples provided and may include otherscenarios not specifically discussed.

In accordance with an example embodiment, FIG. 1 illustrates a converterdevice 100 for receiving and converting an audio signal 120 into adigital audio packet stream 122. In the examples discussed in greaterdetail below, the received audio signal 120 is an analog audio signal,such as what may be provided via an analog audio output of a television,set-top box, audio receiver, or the like. In other examples, thereceived audio signal 120 may be a digital audio signal that theconverter device 100 processes further to generate the digital audiopacket stream 122. In one implementation, the digital audio packetstream 122 is provided to one or more mobile communication devices, suchas smart phones and other mobile devices, either directly or via anintermediate access device, as described more completely below.

In at least some embodiments, the converter device 100 processes theincoming audio signal 120 to provide a digital audio packet stream 122that a mobile device may receive and present to a user while inserting aminimum amount of latency and providing a level of robustness inelectrically noisy and high traffic environments. Other possiblebenefits and advantages may be realized from the various embodimentsdescribed more fully below.

The converter device 100 of FIG. 1 may include an audio signal receiver102, a digital audio encoder 104, and digital audio packetizer 106, anda digital audio transmitter 108. In one example, the audio signalreceiver 102 receives the audio signal 120 and prepares the audio signal120 for encoding by the digital audio encoder 104. If, for example, theaudio signal 120 is an analog audio signal, the audio signal receiver102 may convert the analog audio signal into a digital audio signal.Alternatively, if the audio signal 120 is a digital audio signal, theaudio signal receiver 102 may process the digital audio signal toprovide a different digital audio signal more susceptible to processingby the digital audio encoder 104. Such additional processing may not berequired for some received digital audio signals, however.

The digital audio encoder 104 may take a digital audio signal as inputand encode the digital audio signal into a stream of digital audio datavalues for transmission to a receiving device more efficiently. Thisencoding may thus allow multiple digital audio packet streams 122, aswell as other information, to be transmitted concurrently by multipleconverter devices 100 in the same vicinity. In one example, the encodingmethod employed by the digital audio encoder 104 may be a low-latencyencoding method such that a relatively small amount of input digitaldata is required to produce corresponding output digital data.

The encoded digital audio data values produced by the digital audioencoder 104 are supplied to the digital audio packetizer 106, which maypackage the encoded values into separately transmittable data packets.In one example, each data packet may contain at least one currentencoded audio value, as well as one or more previous encoded audiovalues, thus providing duplicate digital audio values to help preventmissing digital audio values at the receiving device due to messagecollisions, electrical interference, heavy communication traffic, and soon.

The digital audio packetizer 106 may then forward the generated audiodata packets to a digital audio transmitter 108 for transmission as adigital audio packet stream 122. The digital audio transmitter 108 maytransmit the digital audio packet stream 122 over a wired or wirelessconnection to the receiving devices, either directly or via anintermediate access device, as is indicated below.

FIG. 2 is a flow diagram illustrating an example method 200 of operatingan audio converter device, such as the example audio converter device100 of FIG. 1. In the method 200, an audio signal, such as an analog ordigital audio signal, is received (operation 202). In addition, in thecase of an analog audio signal being received, the analog audio signalmay be converted to a digital audio signal (operation 204). The audiosignal may then be encoded into a stream of digital audio values(operation 206). In one example, the encoding is performed according toa low-latency encoding process. A stream of digital audio data packetsmay then be generated from the stream of digital audio data values, witheach of the digital audio data packets including a current (or morerecent) digital audio value and at least one previous (or older) digitalaudio value (operation 208). The stream of digital audio data packets isthen transmitted (operation 210).

FIG. 3A is a block diagram illustrating another example of an audioconverter device 300A, which may include a Pulse Code Modulation (PCM)encoder or codec (coder-decoder) 303, a Constrained Energy LappedTransform (CELT) encoder 304, a digital audio packetizer 306, a wiredtransceiver 312 and/or a wireless local-area network (LAN) transceiver312A, possibly along with memory 308 and a real-time clock (RTC) 310.Other possible components of the converter 300A not explicitly shown inFIG. 3A may also be included in other implementations.

The converter device 300A may receive a stereo analog audio signal 320including separate left (L) and right (R) signals. In anotherimplementation, each of the left and right signals may be unrelatedmonaural audio signals. The analog audio signal 320 is provided to thePCM codec 302 operating as an analog-to-digital converter (ADC) toproduce PCM samples 303. In one example, the PCM codec 302 may operateat 48 kbps (kilobits per second) to generate the PCM samples 303 thatmay include a combined stream of digital data samples for the left andright audio channels. Each sample may be a signed 16-bit value for eachof the left and right channels in one example, while in otherimplementations any sample size may be employed that is compatible withthe desired audio quality of the resulting digital audio being providedby the converter device 300A. Depending on the implementation, the PCMcodec 302 may be an application-specific integrated circuit (ASIC)designed specifically for PCM encoding, or may be a general-purposemicrocontroller, microprocessor, or digital signal processor (DSP)programmed to perform the PCM encoding function. One example of an ASICfor performing the encoding operation of the PCM codec 302 may be theTLV320AIC3204 Stereo Audio Codec by Texas Instruments, Inc. In oneimplementation, the PCM codec 302 may provide an automatic gain control(AGC) function to adjust for a range of signal levels in the stereoanalog audio signal 320.

The generated PCM samples 303 may then be provided as input to the CELTencoder 304 for generating CELT values 305. Generally, the CELT encodingprocess is capable of operating under a minimum fundamental time frame,and thus latency, of 10 msec (milliseconds), thus providing a lowlatency encoding process compared to other encoding algorithms, such asMPEG-2 (Motion Picture Experts Group-2) Audio Layer III (MP3), which mayintroduce a latency of as much as 200 msec. Thus, the loss of any singleCELT value 305 will impact the quality of the resulting digital audiooutput in a negligible manner. Longer minimum fundamental time frames,such as 20 msec, may also be used in the CELT encoder 305 in otherembodiments. In one implementation, the CELT values 305 may constitute asingle stream of digital audio data values representing both channels ofthe analog audio signal 320 received at the converter device 300A.Depending on the embodiment, the CELT encoder 304 may be an ASICdesigned specifically for CELT encoding, or may be a general-purposemicrocontroller, microprocessor, or DSP programmed to perform the CELTencoding function. One example of a microcontroller may be the 32-bitProgrammable Interface Controller (PIC32) microcontroller by MicrochipTechnology, Inc. Also, while the CELT may be chosen as the encodingprocess in the example of FIGS. 3A and 3B, other low-latency encodingformats may be utilized in other embodiments.

The digital audio packetizer 306 may then generate a plurality ofdigital audio data packets 307 based on the CELT values 305. As with thePCM codec 302, the digital audio packetizer 306 may be an ASIC or a moregeneral-purpose microprocessor, microcontroller, or DSP programmed toperform the packetizing functions discussed herein. Also, in oneexample, the CELT values 305 may be forwarded to the digital audiopacketizer 306 by way of a direct memory access (DMA) channel of thepacketizer 306.

In one embodiment, each digital audio data packet 307 includes thecurrent or most recent CELT value 305 in addition to at least one olderCELT value 305 to ensure that each of the values is transmitted morethan once. More specifically, each older sample in a particular digitalaudio data packet 307 may include at least one CELT value 305 thatprecedes the current value in the packet 307 by some prime number ofvalues (termed herein a “prime number replicant”). In at least someexamples, by using prime numbers in this fashion, and by providingmultiple copies of the same value at different times, the digital audiopacketizer 306 provides copies of each value at varying periods of time,thus helping to prevent all copies of the same value from beinginterfered with by a periodic noise or communication source. FIG. 4A,discussed in detail below, provides just one example of a particularpacket format in which a current CELT value 305 and three older CELTvalues 305 are provided.

The digital audio packetizer 306, in one implementation, may format orencapsulate each of the digital audio data packets 307 as a UserDatagram Protocol (UDP) packet or some variant thereof. Generally, UDPis a low-overhead, connectionless communication protocol that does notprovide an explicit mechanism for data integrity or ordering. As aresult, the digital audio packetizer 306 may normally transmit multiplecopies of each digital audio data packet 307 and label each packet 307with a sequence number to allow a receiving device to assemble thereceived packets 307 in the intended order, if necessary.

As shown in FIG. 3A, the digital audio data packets 307 may betransferred over a wired connection via the wired transceiver 312 as adigital audio packet stream 321. In one example, the wired transceiver312 may be an Ethernet transceiver that transmits the digital audiopacket stream 321 via an RJ-45 connector. In another example, thedigital audio data packets 307 may be transferred over a wirelessconnection via the wireless LAN transceiver 312A as a digital audiopacket stream 322. In one example, the wireless LAN transceiver 312A maybe a WiFi® (IEEE 802.11b/g/n) transceiver. In some implementations,either or both of the wired transceiver 312 and the wireless LANtransceiver 312A may be incorporated into the converter device 300A. Inyet other embodiments, other types of communication interfaces may beemployed for the transmission of the digital audio data packets 307.

These same transceivers 312, 312A may be used to load, access, andupdate configuration and other operational data of the converter device300A. In addition, as is described below in conjunction with FIGS. 5 and6, the memory 308, if included in the converter device 300A, may holdconfiguration and other operational data which is employed by theconverter device 300A. In one example, the memory 308 may be a captiveflash memory device, a removable micro-SD (Secure Digital) card, or someother non-volatile memory device.

The RTC 310, if incorporated in the converter device 300B, mayfacilitate logging of data, events, and other information of potentialinterest occurring within, or generated by, the converter device 300A toa provider or user of the converter device 300A.

FIG. 3B provides a block diagram of another example converter device300B, in which two separate analog audio signals 320A, 320B (or fourseparate monaural audio signals) may be processed by two PCM codecs 302(providing corresponding sets of PCM samples 303A, 303B) and two CELTencoders 304 (producing two separate streams of CELT values 305A, 305B).The digital audio packetizer 306 may then process the two streams ofCELT values 305A, 305B concurrently to produce one or two streams ofdigital audio data packets 307 for subsequent transmission. In otherexamples, any number of PCM codecs 302 and associated CELT decoders 304may be employed to process that number of analog audio signals 320within the same converter device 300B.

FIG. 4A is a graphical depiction of an example digital audio data packet400 transmitted by the audio converter device 100 of FIG. 1, or theaudio converter devices 300A, 300B of FIGS. 3A and 3B, respectively. Asshown, the packet 400 is m bytes in length overall, and includes acurrent audio value 402 and three previous (replicant) audio values 404,406, and 408, each of length n bytes, associated with an analog audiosignal 320, 320A, 320B. In the examples of FIGS. 3A and 3B, the audiovalues are CELT values 305. In this particular example, the packet 400begins with a version number (in this case, 0x01 (01 in hexadecimalnotation)) that indicates the specific format of the data in theremainder of the packet 400. Following the version number may be anindication of the number of audio values 402-408 provided in the packet(0x04). While four values are provided in the particular example packet400 of FIG. 4, fewer or greater numbers of audio values may betransported within a single packet 400 in other implementations.

In FIG. 4A, following the indication of the number of audio values402-408, data specific to each of the included audio values 402-408 isprovided. For each audio value 402-408, a sequence number of the audiovalue, the length of the audio value (e.g., n bytes), the actual audiovalue itself, and a possible verification byte for the audio value maybe included. In the example packet 400, the verification byte may be aset value (e.g., 0xA5) indicating the end of the audio value. In otherimplementations, the verification byte may be a checksum or othererror-detecting value based on the associated audio value, thusproviding the receiver the ability to recalculate the verification byteand compare the calculated verification byte to the verification bytereceived in the packet 400 to determine whether the associated audiovalue has been corrupted.

After the last replicant audio value 408, the remainder of the digitalaudio data packet 400 may be padded with fill bytes (0x00), ifnecessary, for the length m of the packet 400 to be some specific value,such as 256 or 512 bytes. In some examples, the fill bytes may bepositioned elsewhere within the packet 400, or may not be present in thepacket 400.

In the specific example of FIG. 4A, and as depicted graphically in FIG.4B, the first replicant value 404 is the seventh audio value precedingthe current audio value 402, the second replicant value 406 is thethirteenth audio value preceding the current audio value 402, and thethird replicant value 408 is the seventeenth audio value preceding thecurrent audio value 402. Thus, for each succeeding packet 400, the audiovalues being transmitted are advanced by one value in time. As describedabove, each of the replicant audio values 404, 406, and 408 precede thecurrent audio value 402 by some prime number of value positions. Whilethe example packet 400 of FIG. 4A uses the prime numbers of 7, 13, and17, other prime number combinations, such as, for example, 7, 13, and17, may be utilized in other embodiments. Also, fewer or greater thanthree replicant audio values may be employed in other examples.

FIGS. 5 and 6 provide examples of two configuration files 500, 600 thatmay be stored in the audio converter device 300B of FIG. 3B, such as inthe memory 308 incorporated therein. In one example, the configurationfiles 500, 600 may be loaded from an external computer or othercommunication device into the audio converter device 300B via the wiredtransceiver 312 or the WLAN transceiver 312A. Additionally, theconfiguration files 500, 600, after having been loaded into theconverter device 300B, may be read and/or updated via one or more of thetransceivers 312, 312A. In one example, an external computer orcommunication device may access the device by way of a web browser viaan Internet Protocol (IP) address assigned to the converter device 300B.

More specifically, FIG. 5 is a depiction of an example setup file 500that may be employed by the audio converter device 300B of FIG. 3B. Inone implementation, the setup file 500 may be a standard text file named“setup.txt”. The example setup file 500 may include an indication of theUDP port numbers to be used for transmitting the analog audio signal320A (identified in the setup file 500 as “Channel A”) and the analogaudio signal 320B (denoted in the setup file 500 as “Channel B”). Thus,presuming use of the wired transceiver 312, the packets of the digitalaudio packet stream 321 associated with the analog audio signal 320A aredirected to Port 8880, while the packets of the digital audio packetstream 321 associated with the analog signal 320B are directed to Port8882.

FIG. 6 is a depiction of an example beacon file 600 that may also bestored in the converter device 300B of FIG. 3B. In this particularexample, the beacon file 600 is an eXtensible Markup Language (XML) filenamed “beacon.xml”. As depicted in FIG. 6, the example beacon file 600may define several values that the converter device 300B is to transmitrepeatedly at some time interval (e.g., once every five seconds) to thecommunication devices that may receive the digital audio packet stream321, 322. These values may include, for example, an indication of thecodec type (e.g., CELT), a version number of the software (e.g., 1.00),an identifier of the venue in which the converter device 300B is located(e.g., 2), a title or name of the venue (e.g., “Joe's Bar and Grill”),and an indication of the UDP or other communication ports and theircorresponding audio streams (e.g., monaural audio from televisions A1and B1 over Port 8880, and monaural audio from televisions C1 and D1over Port 8882). Such information may be relayed to the potentialreceiving devices so that they may determine which audio streams topresent to the user based on a user selection of the audio stream to beheard. The selection and ultimate presentation of an audio stream isdiscussed more fully below in conjunction with FIGS. 12, 13, 14A, and14B. In other implementations, other types of information may bespecified in the example beacon file 600 for periodic transmission tothe potential receiving devices.

In one implementation, an additional file specifying an HTML webpagethrough which one or both of the configuration files 500, 600 may beread and/or updated via an external computer or communication device maybe stored at the converter device 300B of FIG. 3B. For example, the file(e.g., “index.html”) may provide an input field in which the currentcontents of one or both of the configuration files 500, 600 may bedisplayed, and in which changes to the configuration files 500, 600 bemade. In one embodiment, the webpage may be presented to a user of anexternal computer or communication device in response to the IP addressor other indicator identifying the converter device 300B being specifiedby the user in a web browser.

FIG. 7 illustrates an audio distribution system 700 in which one or moreaudio converter devices 100 (FIG. 1) may be employed in one embodiment.Examples of the audio converter devices 100 may include the converterdevice 300A of FIG. 3A and the converter device 300B of FIG. 3B,described in detail above. Generally, the audio distribution system 700is configured to provide multiple streams of audio content to at leastone mobile device 708. In an example, the audio distribution system 700may be located at a particular venue. In some implementations, the venue701 may be a public venue, such as a restaurant, a drinkingestablishment, or a race and sports “book.” In such a venue 701, each ofmultiple audio/video output devices 702, such as televisions, videomonitors, video projectors, and the like, may present one of a number ofsporting events or other audio/video programs to customers or viewerslocated at the venue 701. To allow the patrons of the venue 701 to hearthe audio portion being received by one of the output devices 702, theaudio distribution system 700 makes available the audio from the outputdevices 702 to one or more mobile communication devices 708 held orpossessed by patrons of the establishment. Examples of the mobilecommunication devices 708 include, but are not limited to, cellular“smart” phones, personal digital assistants (PDAs), laptop computers,and tablet computers. In some implementations, each of the mobilecommunication devices 708 may be owned and operated by its respectiveuser, or may be loaned or rented by operators of the venue 701 to theusers.

In an example of the audio distribution system 700, each of theaudio/video output devices 702 generating an audio signal that isdesired to be distributed to users located at the venue 701 may becommunicatively coupled with a converter device 100, which converts theaudio signal from its corresponding output device 702 to a digital audiostream 122. Each converter device 100 may transmit its converted digitalaudio stream 122 to one or more access devices 706. The access device706 distributes the received digital audio streams as one or morewireless digital audio streams 724 to the mobile communication devices708. In one example, one or more of the converter devices 100 may beintegrated with each other, with one or more A/V output devices 702,and/or with one or more of the access devices 706.

A user of each mobile communication device 708 may then select one ofthe digital audio streams 122 represented in the wireless digital audiostream 724 for reception and presentation at the mobile communicationdevice 708 of the user. The user may then listen to the selected audiostream or channel, such as by way of a speaker incorporated into themobile communication device 708, an earphone or headset connected to themobile communication device 708, a Bluetooth®-enabled audio devicecommunicatively coupled with the mobile communication device 708, or thelike. As a result, each user possessing one of the mobile communicationdevices 708 may select and enjoy the audio portion of the audio/videocontent presented by way of one of the output devices 702.

In some examples, the audio distribution system 700 may also be employedas a communication conduit for offering one or more services associatedwith the venue 701, the audio/video content being presented via theoutput devices 702, or some other entity. These services may include,but are not limited to, chat rooms involving users of other mobiledevices 708, advertising and sales associated with the venue 701 orother entities, customer loyalty programs associated with the venue 701or another entity, social networking services involving other users ofother mobile devices 708, and gaming or wagering services associatedwith the venue 701 or another entity. Such services may be organized andprovided across the entire system 700, or according to some subdivisionof the system 700, such as according to venue 701 or access device 706.In some examples, this functionality may be provided directly by theaccess device 706 or in conjunction with a communication node 712, suchas an information server, communicatively coupled with the access device706 by way of a communication network 710. Examples of the communicationnetwork 710 may include, but are not limited to, a wide-area network(WAN), such as an Intranet, the Internet, or some portion thereof, alocal-area network (LAN), and an IEEE 802.11x (WiFi) network. Also,while the communication node 712 and the communication network 710 areshown as being located external to the venue 701, the communication node712 and the network 710 may be located completely or partially withinthe venue 701 in other examples.

The converter device 100 may be configured to receive an analog audiosignal 120 from one of the audio/video output devices 702. In oneexample, the analog audio signal 120 is carried by way of a wire, cable,optical fiber, or other wired means from a standard analog “audio out”connector of the corresponding output device 702 to the converter device100. In another implementation, the analog out connector may be attachedto a wireless transmitter to carry the analog audio stream as an analogor digital wireless signal to the converter device 100. Other methodsand apparatus for carrying the audio signal 120 to the converter device100 may be employed in other embodiments. In yet further examples, theaudio signal 120 generated by the audio/video output device 702 may bedigital in nature, in which case the converter device 100 may or may notbe required in order to present a corresponding digital audio stream 122to the access device 706. In some implementations, the converter device100 may receive audio content from multiple audio/video output devices702 simultaneously, as indicated above with respect to converter device300B of FIG. 3B. Such multiple analog audio signals may be converted andthen combined into a single digital audio stream 122 or multiple digitalaudio streams 122 for transmission to the access device 706. Further,the converter device 100 may physically reside remotely from, beattached externally to, or be located within the audio/video outputdevice 702 to which the converter device 100 is communicatively coupled.More specifically, in one example, the converter device 100 may beintegrated or reside within the audio/video output device 702, with theconverter device 100 being electrically coupled to one or more portionsof the circuitry within the audio/video output device 702, thusproviding the converter device 100 access to those circuit portions thatare not typically available via output ports or connections of theaudio/video output device 702.

The digital audio packet stream 122 generated by the conversion module100 may then be transmitted to the access device 706 as the digitalaudio packet stream 122. In one example, the digital audio packet stream122 is transmitted over a wire, cable, optical fiber, or the like to theaccess device 706. In one example, the digital audio packet stream 122is transmitted via an Ethernet connection or network to the accessdevice 706. More specifically, the converter device 100 may be attachedto an Ethernet network as a network appliance, along with otherconverter devices 100, for communicative coupling with the access device706. In another implementation, the digital audio packet stream 122 istransmitted wirelessly, such as by way of a WiFi or Bluetooth® protocol.

FIG. 8 is a block diagram of an example access device 800 implementableas the access device 706 of FIG. 7. The example access device 800 mayinclude one or more digital audio receivers 802, a wireless transceiver806, a communication network interface 808, and control logic 804. Inother examples, other components not explicitly shown in FIG. 8 may alsobe incorporated into the access device 800.

In the example of FIG. 8, each digital audio packet stream 122 generatedby a converter device 100 may be received at a digital audio receiver802 of the access device 800. In some implementations, such as the useof an Ethernet network to transmit and receive the digital audio streams122, the digital audio receivers 802 may be embodied as a singleEthernet receiver or transceiver with multiple connectors, with eachconnector receiving a digital audio packet stream 122 from one of theconverter devices 100. The Ethernet receiver may also act as atransceiver to provide the signals necessary to implement the Ethernetprotocol, as controlled by the control logic 804. In other examples, aseparate digital audio receiver 802 is used for each digital audiopacket stream 122 to be received, as depicted in FIG. 8.

The control logic 804 may provide each of the received digital audiostreams 122 to the wireless transceiver 806 for transmission as one ormore wireless digital audio streams 724 to the mobile communicationdevices 708 of FIG. 7. In one example, the wireless transceiver 806, inconjunction with the control logic 804, operates as a transceiveroperating under IEEE 802.11x (WiFi) protocols. In addition, the accessdevice 800 may serve as a wireless router for transfer of additionalcontent 726 between the various mobile communication devices 708. Theaccess device 800 may, in some examples, operate as a router fortransfer of information associated with the converter devices 100,including configuration information.

The communication network interface 808 is configured to facilitatecommunications between the access device 800 and the communication node712 of FIG. 7 via the communication network 710. In one example, thecommunication network interface 808 employs an Ethernet connection forcommunication with a gateway device, such as a cable or digitalsubscriber line (DSL) modem in communication with the Internet or othercommunication network 710. In another example, the communication networkinterface 708 may incorporate the functionality of such a gatewaydevice.

In some implementations, the control logic 804 may providefunctionality, possibly under the guidance of a system administrator orother personnel, to support a number of functions related to theoperation of the audio distribution system 700. These functions mayinclude, but are not limited to, configuration and operation of theaudio distribution functions, network management and administration ofthe mobile communication devices 708 as nodes of a LAN, and networkrouting functions for the LAN. The control logic 804 may also provideweb-related functions, such as a captive portal and redirectionfunctions similar to those associated with a “walled garden,” thusgiving the proprietor of the venue 701 or other entity control over webcontent accessible by the mobile communication devices 708 via theaccess device 800. Such a walled garden may, for example, exhibitcontrol over which Web-based applications, media, and content areavailable via the access device 800, such as by way of Uniform ResourceLocator (URL) filtering or other means of restricting access to variousportions of the Internet. Further, in one example, the control logic 804prevents mobile communication devices 708 that are not executing aspecific application that may be required to communicate with the accessdevice 800 from discovering a network access password needed to engagein communications with the access device 800.

The control logic 804, possibly in conjunction with the communicationnode 712 of FIG. 7, may also facilitate one or more of the servicesdescribed above, such as chatting, gaming, point-of-sale transactions,customer loyalty programs, and the like. The control logic 804 mayinclude electronic hardware, software, or some combination thereof, suchas one or processors configured to execute instructions that cause theprocessor to perform the various operations described herein that areattributed to the access device 800.

FIG. 9 illustrates an example method 900 of operating the access device800 of FIG. 8. In the method 900, the access device 800 receivesmultiple digital audio streams (operation 902), possibly from one ormore converter devices, such as the converter device 100 of FIG. 7 orthe converter devices 300A, 300B of FIGS. 3A and 3B, respectively. Theaccess device 800 transmits the multiple digital audio streams as one ormore wireless digital audio streams to at least one mobile communicationdevice (operation 904). The access device 800 may also communicateadditional content with the at least one mobile communication deviceand/or a communication node (operation 906), as noted above.

FIG. 10 is a block diagram illustrating an example mobile communicationdevice 1000 implementable as one or more of the mobile communicationdevices 708 of FIG. 7. Examples of the mobile communication device 1000include, but are not limited to, “smart” phones, PDAs, laptop computers,and tablet computers. The mobile communication device 1000 includes awireless transceiver 1002, a user interface 1004, geographic locationcircuitry 1006, and control logic 1008. Other components not explicitlydepicted in FIG. 10 may be incorporated into the mobile communicationdevice 1000 in other embodiments.

The wireless transceiver 1002 receives the one or more wireless digitalaudio streams 724 transmitted from an access device 706, as well astransmits and/or receives the additional content 726 mentioned above. Inone example, the wireless transceiver 1002, under the operation of thecontrol logic 1008, communicates with the access device 706 using WiFiprotocols. In some examples, the wireless transceiver 1002 may alsocommunicate with another communication network, such as a cellulartelephone network employing CDMA (Code Division Multiple Access), GSM(Global System for Mobil Communications), and/or other communicationprotocols.

In one embodiment, the wireless transceiver 1002 may receive the one ormore wireless digital audio streams 724 from a source other than theaccess device 706. For example, a centralized audio stream server (whichmay not be associated with, or located near, the venue 701 at which themobile communication device 1000 is positioned) may provide at leastsome digital audio streams by way of the Internet or anothercommunication network to the mobile communication device 1000. Use of acentralized audio stream server may be appropriate in situations inwhich, for example, converter devices 100 are not available at the venue701.

The user interface 1004 allows a user of the mobile communication device1000 to interact with the mobile communication device 1000. Suchinteraction may include, for example, user selection of a wirelessdigital audio stream 724 received at the mobile communication device1000, user listening of the selected wireless digital audio stream 724,and user involvement with services provided via the access device 706 byway of the additional content 726 communicated between the mobilecommunication device 1000 and the access device 706. Components that maybe incorporated as part of the user interface 1004 may include, but arenot limited to, a visual display (possibly integrated with a touchdisplay or touchscreen), a keypad, an audio speaker and/or audioconnector, a Bluetooth® interface for an audio speaker or earphone, amicrophone, a camera, and an accelerometer.

The mobile communication device 1000 may also include the geographiclocation circuitry 1006, an example of which may be circuitry forreceiving satellite signals from the Global Positioning System (GPS)that may be employed by the control logic 1008 to determine thegeographic location of the mobile communication device 1000. The controllogic 608 may also employ the location information to determine if anearby access device 706 is available to the mobile device 1000 forcommunication purposes.

The control logic 1008 may control any and/or all of the othercomponents of the mobile communications device 1000, such as thewireless transceiver 1002, the user interface 1004, and the geographiclocation circuitry 1006. The control logic 1008 may include electronichardware, software, or some combination thereof, such as one or moreprocessors configured to execute instructions that cause the processorto perform the various operations described herein that are attributedto the mobile communication device 1000.

FIG. 11 is a block diagram of example modules incorporated as part ofthe control logic 1008 of the mobile communications device 1000 of FIG.10. Each of the modules shown in FIG. 11 may include hardware, software,or some combination thereof. The example modules may include acommunication connection module 1102, a channel selection module 1104, ageographic location module 1106, a user settings module 1108, and anaudio reception/playback module 1110. Other modules not explicitlydepicted in FIG. 11, such as those for supplying a chat service, anadvertising/sales service, a gaming service, a customer loyalty service,and a social network access service, may also being included in thecontrol logic 1008. In one example, one or more of the modules 1102-1110may be included or represented in an application, or “app,” that may beloaded into, and executed by, the control logic 1008 to provide thevarious functions described in greater detail below by the mobilecommunication device 1000.

In one example, the communication connection module 1102 facilitates thecreation of a communication connection between the mobile communicationdevice 1000 and the access device 706 to allow the reception of the oneor more wireless digital audio streams 724, as well as the transmissionand reception of the additional content 726. The communicationconnection module 1102 may also assist in creating a secure connectionbetween the mobile communication device 1000 and the access device 706for various services mentioned above. In one example, the communicationconnection module 1102 also facilitates creating a communicationconnection between the mobile communication device 1000 and thecommunication node 712 of FIG. 1 and other nodes by way of analternative communication network, such as a cellular telephone network.

The channel selection module 1104, in one example, presents identitiesof a set of audio channels to the user via the user interface 1004 ascarried in the one or more wireless digital audio streams 724, receivesa user selection of one of the channels, and presents the selectedchannel to the user, such as by way of an audio speaker or other audiooutput interface. In an example, the channel selection module 1104 maypresent the identity of an audio channel associated with an identity ofits corresponding audio/video output device 702 so that the user maydiscern which audio channel to select for the video content he iscurrently viewing.

In one example, the geographic location module 1106, by utilizing thegeographic location circuitry 1006, may determine the current locationof the mobile communication device 1000 to decide which of multipleaccess devices 706 currently available are providing acceptablecommunication signals or signal strengths to the mobile communicationdevice 1000, and thus are the access devices 706 most likely to provideaudio content of interest to the user of the mobile communication device1000.

In another example, the current location of the mobile communicationdevice 1000 may be used to recommend other locations or venues thatpossess at least one access device 706 for the provision of the servicesdescribed herein, especially in cases in which no access devices 706 areimmediately available at the current location.

In other situations, technologies other than the geographical locationcircuitry 1006 may be utilized to determine with greater specificity alocation of the mobile communication device 1000. In just one example,the geographic location module 1106 may be configured to decipher quickresponse (QR) codes placed at various locations in a venue 701 todetermine the location of the mobile communication device 1000 withinthe venue 701. Such information may then be made available to thecommunication node 712 to refine or otherwise direct the servicesprovided to the mobile communication device 1000, such as the deliveryof food to a specific table equipped with the QR code. Othertechnologies, such as radio-frequency identification (RFID) technology,may be used to similar effect.

The user settings module 1108 may allow a user to alter or changevarious settings or parameters that control the operation of the mobilecommunication device 1000 or the access device 706. Examples of suchsettings include, but are not limited to, details regarding how themobile communication device 1000 presents information to the user,information associated with the user (such as a chat “handle” oridentifier for the user), selection of a LAN for communication with anaccess device 706, user visibility/anonymity settings, and userpreferences regarding reception of personalized offers or loyaltyprogram subscriptions.

The audio reception/playback module 1110 may facilitate the receptionand subsequent playback to the user of a selected one of the digitalaudio packet streams 122 incorporated in the wireless digital audiopacket stream 724 received at the mobile device 708. Operation of theaudio reception/playback module 1110 is described more fully below inconnection with FIGS. 14A and 14B.

FIG. 12 is a flow diagram of an example method 1200 of receiving audiodata into the mobile communication device 1000 after a communicationconnection with the access device 706 has been established. In themethod 1200, the mobile communication device 1000 receives a pluralityof digital audio streams via the established communication connection(operation 1202). Each of the streams may represent the audio contentfrom a particular audio/video output device 100 in one implementation.In one example, the plurality of digital audio streams may be combinedinto fewer signal data streams, wherein the digital audio streams aremultiplexed in some fashion. The mobile communication device 1000 alsoreceives information identifying the plurality of digital audio streamsvia the communication connection (operation 1204). Within each converterdevice 100, the identifying information associated with that converterdevice 100 may be stored in its corresponding beacon file 600 (describedabove) and transmitted periodically via the access device 706 to themobile communication device 1000. The mobile communication device 1000may then combine the identifying information received from each of theconverter devices 100 before presentation to the user. The identifyinginformation may also include, in one implementation, an identificationof the audio/video output device 102 that is sourcing the audio of eachdigital audio stream.

After the mobile communication device 1000 presents the identifyinginformation to the user (operation 1206), the mobile communicationdevice 1000 receives a selection of one of the digital audio streamsfrom the user (operation 1208). In response to the user selection, themobile communication device 1000 presents the selected digital audiostream to the user for listening (operation 1210). In someimplementations, the mobile communication device 1000 may also transmitthe user selection to the wireless access device 706 and/or thecommunication node 712 (operation 1212), as the identification may allowpresentation of additional content 726 (such as product or serviceadvertising) that is related to the audio/video content being consumedby the user.

FIG. 13 is a graphical representation of an example mobile devicedisplay 1300 of the mobile communication device 1000 presenting theidentity of several digital audio data streams available for reception.More specifically, the display 1300 presents the identity of severaldifferent audio/video channels 1302 along with an identity of theparticular audio/video output device 702 associated with the digitalaudio stream and a short description of the audio/video content. In oneexample, presuming the display 1300 is a touchscreen, the user need onlytouch a representation of one of the available audio channels 1302, andthe mobile communication device 1000 begins presenting the audio for theselected channel in response. Also shown in the display 1300 may be anadvertisement 1304 presented by the establishment or venue 701 in whichthe mobile communication device 1000 is located. Given the potentialreal-time nature of the information being presented to the user, theadvertisement 1304 may incorporate a time-critical element, such as anexpiration time.

In one example, upon the user selecting one of the available audiochannels 1302, a second display associated with the selected audiochannel may be presented to the user. This display may presentinformation, such as the broadcast channel and the particular program orevent involved, which is specifically associated with the selected audiochannel. In some examples, the channel-specific display may includeadvertising, such as advertising corresponding to the broadcast channelor the venue.

FIGS. 14A and 14B present a flow diagram illustrating operations ofvarious execution threads executing within the example mobilecommunication device 1000 of FIG. 10 for processing a received digitalaudio packet stream according to an example execution thread dataflow1400. In the particular example of FIGS. 14A and 14B, the wirelessdigital audio packet stream 724 received from the access device 706 ofFIG. 7 may be processed using four separate execution threads operatingwithin the mobile communication device 1000: a first OS (OperatingSystem) thread 1410, a first audio processing thread 1420, a secondaudio processing thread 1430, and a second OS thread 1440. However, anynumber of execution threads may be employed for the processing andpresentation of audio data to a user of the mobile communication device1000 in other embodiments. In this example, the operating system of themobile communication device 1000 is a version of the Android® operatingsystem, but other types of operating systems, such as iOS by Apple,Inc., may be employed in other examples.

In FIG. 14A, the first OS thread 1410 may implement a network stack 1412and a corresponding network buffer 1414. The network stack 1412 mayreceive the packets of the wireless digital audio packet stream 724(e.g., a UDP digital audio packet stream), and place the receivedpackets in the network buffer 1414. In some examples, the network stack1412 may receive all network traffic, which may include other data inaddition to the wireless digital audio packet stream 724 and place thattraffic in the network buffer 1414. In one instance, the operation ofthe network stack 1412 and the network buffer 1414 may introduce alatency about 100 msec from the time the UDP packet arrives at thenetwork stack 1412 and the resulting CELT values from the packets areavailable at the first audio processing thread 1420.

In the first audio processing thread 1420, a CELT value hander 1422 mayretrieve at least some of the UDP packets that were stored in thenetwork buffer 1414 from the wireless digital audio packet stream 724,extracts at least some of the CELT values 1415 stored in the packets,reconstructs the PCM samples 1423 from the extracted CELT values 1415,and stores the reconstructed PCM samples 1423 in a sample queue 1424. Inone example, the PCM samples 1423 are generated according to the 48kbps, 16-bit signed format mentioned above.

In one example, the CELT value handler 1422 may also employ an internalbuffer (not explicitly shown in FIG. 14A) in which the CELT valuehandler 1422 stores the CELT values 1415 in order according to thesequence number of each CELT value 1415. Further, the CELT value handler1422 may use any of the current CELT values or replicant CELT valuesfrom the packets of the wireless digital audio packet stream 724 toreconstruct the original stream of CELT values generated in theconverter device 100, 300A, 300B. Using the digital audio data packet400 of FIG. 4A as a specific example, if a packet containing a currentCELT value 402 with a sequence number of x is not received due to acommunication collision or other problem, but those current CELT values402 with sequence numbers x+1, x+2, and x+3 have been received at theCELT value handler 1422, the current CELT value handler 1422 maythereafter receive the CELT value 402 as a first replicant value 404, asecond replicant value 406, or a third replicant value 408 in asubsequent digital audio data packet 400, as described above.

Given the preceding operations, the length of this internal buffer maybe designed in one embodiment to receive the oldest replicant packetswhile still retaining the capacity to store each current CELT value 1415that is being received at the CELT value handler 1422. In one example,presuming a fundamental time frame of 10 msec for each CELT value 1415and an oldest replicant CELT value lagging the current CELT value byseventeen values (e.g., the third replicant value 408 of FIG. 4A), theinternal buffer may be at least large enough to store eighteen CELTvalues, corresponding to approximately 180 msec. In some examples, thecapacity of the internal buffer may be extended (e.g., 200 msec total)to account for possible delaying of UDP packets in the wireless digitalaudio packet stream 724, such as by buffering of the packets in theaccess device 706 of FIG. 7. Thus, the first audio processing thread1420 may introduce an additional latency of approximately 200 msec.

In addition, the CELT value handler may also perform an error detectionoperation on each received CELT value 1415, such as by way of theverification byte of each current and replicant CELT value 402-408 todetermine if the received CELT value 1415 should be stored, or elsediscarded in favor of a replicant CELT value 404-408 yet to be receivedat the mobile communication device 1000.

In one example, instead of using an internal buffer for the receivedCELT values, the CELT value handler 1422 may use the sample queue 1424to monitor which CELT values and associated PCM samples have beenreceived, to determine which values or PCM samples still need to bereceived by way of replicant CELT values, and to perform otheroperations provided by the CELT value handler 1422.

As illustrated in FIG. 14B, the second OS thread 1440 includes a PCMplayer 1442 which receives the PCM samples 1423, converts the samples1423 to an analog audio signal 1445 using a digital-to-analog converter(ADC), and forwards the analog audio signal 1445 to a speaker/headphonejack 1450 for presentation to the user. In an embodiment, the PCM player1442 is directly compatible with the PCM samples 1423 produced by theCELT value handler 1422, which may be in a 48-kbps, 16-bit signed stereoformat, as described above. However, in one example, the PCM player 1442may not be configured to extract the PCM samples 1423 at a consistentrate. More specifically, the PCM player 1442 may at times extract manyPCM samples 1423 at once, and then subsequently allow many millisecondsto pass before extracting more of the PCM samples 1423.

To protect against potential buffer overruns or underruns involving thePCM player 1442, the second audio processing thread 1430 may incorporatea PCM buffer player 1432 and an associated PCM buffer 1434. While thesample queue 1424 of the first audio processing thread 1420 makesavailable a set of PCM samples 1423 once every 10 msec in accordancewith the fundamental time period of the CELT decoding process with someregularity, the PCM buffer player 1432 may at least partially fill thesubsequent PCM buffer 1434 by some predetermined amount or percentagewith the PCM samples 1423 from the sample queue 1424 before initiatingthe PCM player 1442 to begin retrieving the PCM samples 1423 from thePCM buffer 1434 for generation of the analog audio signal 1445. In oneimplementation, the PCM buffer player 1432 fills the PCM buffer 1434 atleast halfway prior to initiating the PCM player 1442. In one example,the operation of the second audio processing thread 1430 and the secondOS thread 1440 may incur approximately an additional 200 msec oflatency.

Thus, based on the foregoing discussion, the execution thread dataflow1400 may, in some implementations, introduce a latency of approximately500 msec. Given a presumed additional latency of 20 to 40 msec due toother portions of the communication path from one of the audio/videooutput devices 702, through the converter device 100 and the accessdevice 706, as shown in FIG. 7, a user may experience a total latency of520 to 540 msec between the video presented by the audio/video outputdevice 702 and the audio being output by the mobile communication device100. Such latency is generally less than what is likely to beexperienced by use of a more conventional encoding scheme, such as MP3,while at the same time providing redundancy in the transmission ofdigital audio data in a wireless environment.

While much of the above discussion focuses on certain public venues,such as restaurants, bars, and sports books, as likely locations forimplementation of the systems and methods described herein, othervenues, both public and private, such as airport terminals or gateareas, corporate reception lobbies, doctor's office waiting areas,classrooms, and so on, may also benefit from application of the variousconcepts described herein.

Modules, Components, and Logic

Certain embodiments, such as the converter devices 100, 300A, 300B, theaccess devices 706, 800, the mobile communication devices 708, 1000, andthe communication node 712 discussed above, are described herein asincluding logic or a number of components, modules, or mechanisms.Modules may constitute either software modules (e.g., code embodied on amachine-readable medium or in a transmission signal) or hardwaremodules. A hardware module is a tangible unit capable of performingcertain operations and may be configured or arranged in a certainmanner. In example embodiments, one or more computer systems (e.g., astandalone, client, or server computer system) or one or more hardwaremodules of a computer system (e.g., a processor or a group ofprocessors) may be configured by software (e.g., an application orapplication portion) as a hardware module that operates to performcertain operations as described herein.

In various embodiments, a hardware module may be implementedmechanically or electronically. For example, a hardware module maycomprise dedicated circuitry or logic that is permanently configured(e.g., as a special-purpose processor, such as a field programmable gatearray (FPGA) or an application-specific integrated circuit (ASIC)) toperform certain operations. A hardware module may also compriseprogrammable logic or circuitry (e.g., as encompassed within ageneral-purpose processor or other programmable processor) that istemporarily configured by software to perform certain operations. Itwill be appreciated that the decision to implement a hardware modulemechanically, in dedicated and permanently configured circuitry, or intemporarily configured circuitry (e.g., configured by software) may bedriven by cost and time considerations.

Accordingly, the term “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired) or temporarilyconfigured (e.g., programmed) to operate in a certain manner and/or toperform certain operations described herein. Considering embodiments inwhich hardware modules are temporarily configured (e.g., programmed),each of the hardware modules need not be configured or instantiated atany one instance in time. For example, where the hardware modulescomprise a general-purpose processor configured using software, thegeneral-purpose processor may be configured as respective differenthardware modules at different times. Software may accordingly configurea processor, for example, to constitute a particular hardware module atone instance of time and to constitute a different hardware module at adifferent instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multiplesuch hardware modules exist contemporaneously, communications may beachieved through signal transmission (e.g., over appropriate circuitsand buses) that connect the hardware modules. In embodiments in whichmultiple hardware modules are configured or instantiated at differenttimes, communications between such hardware modules may be achieved, forexample, through the storage and retrieval of information in memorystructures to which the multiple hardware modules have access. Forexample, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions. The modulesreferred to herein may, in some example embodiments, compriseprocessor-implemented modules.

Similarly, the methods described herein may be at least partiallyprocessor-implemented. For example, at least some of the operations of amethod may be performed by one or more processors orprocessor-implemented modules. The performance of certain of theoperations may be distributed among the one or more processors, not onlyresiding within a single machine, but deployed across a number ofmachines. In some example embodiments, the processor or processors maybe located in a single location (e.g., within a home environment, anoffice environment, or as a server farm), while in other embodiments theprocessors may be distributed across a number of locations.

The one or more processors may also operate to support performance ofthe relevant operations in a “cloud computing” environment or as a“software as a service” (SaaS). For example, at least some of theoperations may be performed by a group of computers (as examples ofmachines including processors), these operations being accessible via anetwork (e.g., the Internet) and via one or more appropriate interfaces(e.g., APIs).

Electronic Apparatus and System

Example embodiments may be implemented in digital electronic circuitry,or in computer hardware, firmware, or software, or in combinationsthereof. Example embodiments may be implemented using a computer programproduct (e.g., a computer program tangibly embodied in an informationcarrier in a machine-readable medium) for execution by, or to controlthe operation of, data processing apparatus (e.g., a programmableprocessor, a computer, or multiple computers).

A computer program can be written in any form of programming language,including compiled or interpreted languages, and it can be deployed inany form, including as a stand-alone program or as a module, subroutine,or other unit suitable for use in a computing environment. A computerprogram can be deployed to be executed on one computer or on multiplecomputers at one site or distributed across multiple sites andinterconnected by a communications network.

In example embodiments, operations may be performed by one or moreprogrammable processors executing a computer program to performfunctions by operating on input data and generating output. Methodoperations can also be performed by, and apparatus of exampleembodiments may be implemented as, special purpose logic circuitry(e.g., a field programmable gate array (FPGA) or an application-specificintegrated circuit (ASIC)).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on their respectivecomputers and having a client-server relationship to each other. Inembodiments deploying a programmable computing system, it will beappreciated that both hardware and software architectures may beconsidered. Specifically, it will be appreciated that the choice ofwhether to implement certain functionality in permanently configuredhardware (e.g., an ASIC), in temporarily configured hardware (e.g., acombination of software and a programmable processor), or a combinationof permanently and temporarily configured hardware may be a designchoice. Below are set forth hardware (e.g., machine) and softwarearchitectures that may be deployed in various example embodiments.

Example Machine Architecture and Machine-Readable Medium

FIG. 15 is a block diagram of a machine in the example form of acomputer system 1500 within which instructions for causing the machineto perform any one or more of the methodologies discussed herein may beexecuted. In alternative embodiments, the machine operates as astandalone device or may be connected (e.g., networked) to othermachines. In a networked deployment, the machine may operate in thecapacity of a server or a client machine in a server-client networkenvironment, or as a peer machine in a peer-to-peer (or distributed)network environment. The machine may be a personal computer (PC), atablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), acellular telephone, a web appliance, a network router, switch or bridge,or any machine capable of executing instructions (sequential orotherwise) that specify actions to be taken by that machine. Further,while only a single machine is illustrated, the term “machine” shallalso be taken to include any collection of machines that individually orjointly execute a set (or multiple sets) of instructions to perform anyone or more of the methodologies discussed herein.

The example computer system 1500 includes a processor 1502 (e.g., acentral processing unit (CPU), a graphics processing unit (GPU), orboth), a main memory 1504, and a static memory 1506, which communicatewith each other via a bus 1508. The computer system 1500 may furtherinclude a video display unit 1510 (e.g., a liquid crystal display (LCD)or a cathode ray tube (CRT)). The computer system 1500 also includes analphanumeric input device 1512 (e.g., a keyboard), a user interface (UI)navigation device 1514 (e.g., a mouse), a disk drive unit 1516, a signalgeneration device 1518 (e.g., a speaker), and a network interface device1520.

Machine-Readable Medium

The disk drive unit 1516 includes a machine-readable medium 1522 onwhich is stored one or more sets of data structures and instructions1524 (e.g., software) 1524 embodying or utilized by any one or more ofthe methodologies or functions described herein. The instructions 1524may also reside, completely or at least partially, within the mainmemory 1504 and/or within the processor 1502 during execution thereof bythe computer system 1500, the main memory 1504 and the processor 1502also constituting machine-readable media.

While the machine-readable medium 1522 is shown in an example embodimentto be a single medium, the term “machine-readable medium” may include asingle medium or multiple media (e.g., a centralized or distributeddatabase, and/or associated caches and servers) that store the one ormore instructions 1524 or data structures. The term “non-transitorymachine-readable medium” shall also be taken to include any tangiblemedium that is capable of storing, encoding, or carrying instructionsfor execution by the machine and that cause the machine to perform anyone or more of the methodologies of the present subject matter, or thatis capable of storing, encoding, or carrying data structures utilized byor associated with such instructions. The term “non-transitorymachine-readable medium” shall accordingly be taken to include, but notbe limited to, solid-state memories, and optical and magnetic media.Specific examples of non-transitory machine-readable media include, butare not limited to, non-volatile memory, including by way of example,semiconductor memory devices (e.g., Erasable Programmable Read-OnlyMemory (EPROM), Electrically Erasable Programmable Read-Only Memory(EEPROM), and flash memory devices), magnetic disks such as internalhard disks and removable disks, magneto-optical disks, and CD-ROM andDVD-ROM disks.

Transmission Medium

The instructions 1524 may further be transmitted or received over acomputer network 1550 using a transmission medium. The instructions 1524may be transmitted using the network interface device 1520 and any oneof a number of well-known transfer protocols (e.g., HTTP). Examples ofcommunication networks include a local area network (LAN), a wide areanetwork (WAN), the Internet, mobile telephone networks, Plain OldTelephone Service (POTS) networks, and wireless data networks (e.g.,WiFi and WiMAX networks). The term “transmission medium” shall be takento include any intangible medium that is capable of storing, encoding,or carrying instructions for execution by the machine, and includesdigital or analog communications signals or other intangible media tofacilitate communication of such software.

CONCLUSION

Thus, methods and systems to transmit one or more streams of audio datain a redundant and low-latency manner have been described. Although thepresent subject matter has been described with reference to specificexample embodiments, it will be evident that various modifications andchanges may be made to these embodiments without departing from thebroader scope of the subject matter. Accordingly, the specification anddrawings are to be regarded in an illustrative rather than a restrictivesense. The accompanying drawings that form a part hereof, show by way ofillustration, and not of limitation, specific embodiments in which thesubject matter may be practiced. The embodiments illustrated aredescribed in sufficient detail to enable those skilled in the art topractice the teachings disclosed herein. Other embodiments may beutilized and derived therefrom, such that structural and logicalsubstitutions and changes may be made without departing from the scopeof this disclosure. This Detailed Description, therefore, is not to betaken in a limiting sense, and the scope of various embodiments isdefined only by the appended claims, along with the full range ofequivalents to which such claims are entitled.

Such embodiments of the inventive subject matter may be referred toherein, individually and/or collectively, by the term “invention” merelyfor convenience and without intending to voluntarily limit the scope ofthis application to any single invention or inventive concept if morethan one is in fact disclosed. Thus, although specific embodiments havebeen illustrated and described herein, it should be appreciated that anyarrangement calculated to achieve the same purpose may be substitutedfor the specific embodiments shown. This disclosure is intended to coverany and all adaptations or variations of various embodiments.Combinations of the above embodiments, and other embodiments notspecifically described herein, will be apparent to those of skill in theart upon reviewing the above description.

All publications, patents, and patent documents referred to in thisdocument are incorporated by reference herein in their entirety, asthough individually incorporated by reference. In the event ofinconsistent usages between this document and those documents soincorporated by reference, the usage in the incorporated reference(s)should be considered supplementary to that of this document; forirreconcilable inconsistencies, the usage in this document controls.

In this document, the terms “a” or “an” are used, as is common in patentdocuments, to include one or more than one, independent of any otherinstances or usages of “at least one” or “one or more.” In thisdocument, the term “or” is used to refer to a nonexclusive “or”, suchthat “A or B” includes “A but not B,” “B but not A,” and “A and B,”unless otherwise indicated. In the appended claims, the terms“including” and “in which” are used as the plain-English equivalents ofthe respective terms “comprising” and “wherein.” Also, in the followingclaims, the terms “including” and “comprising” are open-ended; that is,a system, device, article, or process that includes elements in additionto those listed after such a term in a claim are still deemed to fallwithin the scope of that claim. Moreover, in the following claims, theterms “first,” “second,” “third,” and so forth are used merely as labelsand are not intended to impose numerical requirements on their objects.

The Abstract of the Disclosure is provided to comply with 37 C.F.R.§1.72(b), requiring an abstract that will allow the reader to quicklyascertain the nature of the technical disclosure. The Abstract issubmitted with the understanding that it will not be used to interpretor limit the scope or meaning of the claims. In addition, in theforegoing Detailed Description, it can be seen that various features aregrouped together in a single embodiment for the purpose of streamliningthe disclosure. This method of disclosure is not to be interpreted asreflecting an intention that the claimed embodiments require morefeatures than are expressly recited in each claim. Rather, as thefollowing claims reflect, inventive subject matter lies in less than allfeatures of a single disclosed embodiment. Thus the following claims arehereby incorporated into the Detailed Description, with each claimstanding on its own as a separate embodiment.

What is claimed is:
 1. A digital audio converter device for redundant, low-latency transmission of one or more digital audio streams, the converter device comprising: a receiver to receive an audio signal; a digital audio encoder to encode the audio signal into a stream of digital audio values forming a sequence of digital audio values, each digital audio value having an audio-value position, the audio-value position indicating a position of the digital audio value in the sequence; a digital audio packetizer to generate a stream of digital audio data packets from the stream of digital audio values, each of the digital audio data packets including a current digital audio value and a plurality of previous digital audio values of the stream of digital audio values where, for each of the digital audio data packets, each of the plurality of previous digital audio values precede the current digital audio value in the sequence of digital audio values by a respective prime number of audio-value positions such that in each of the digital audio data packets the plurality of previous digital audio values each have a different audio-value position for interference resistance to a periodic noise or communication source; and a transmitter to transmit the stream of digital audio data packets to a receiving device.
 2. The converter device of claim 1, the audio signal comprising an analog audio signal, and the receiver comprising an analog-to-digital converter to digitize the analog audio signal.
 3. The converter device of claim 1, wherein each of the digital audio data packets includes a current digital audio value and a plurality of previous digital audio values.
 4. The converter device of claim 3, the plurality of previous digital audio values comprising a first previous digital audio value preceding the current digital audio value by seven audio-value positions in the sequence of digital audio values, a second previous digital audio value preceding the current digital audio value by thirteen audio-value positions in the sequence of digital audio values, and a third previous digital audio value preceding the current digital audio value by seventeen audio-value positions in the sequence of digital audio values.
 5. The converter device of claim 3, the plurality of previous digital audio values comprising a first previous digital audio value preceding the current digital audio value by seven audio-value positions in the sequence of digital audio values, a second previous digital audio value preceding the current digital audio value by eleven audio-value positions in the sequence of digital audio values, and a third previous digital audio value preceding the current digital audio value by seventeen audio-value positions in the sequence of digital audio values.
 6. The converter device of claim 1, the stream of digital audio packets comprising user datagram protocol packets.
 7. The converter device of claim 1, the digital audio encoder to encode the audio signal according to a constrained energy lapped transform.
 8. The converter device of claim 1, each of the digital audio data packets including a sequence number identifying each of the digital audio values included in the corresponding digital audio data packet.
 9. The converter device of claim 1, each of the digital audio data packets including a verification byte for each of the digital audio values included in the corresponding digital audio data packet, the verification byte including additional information verifying accuracy of the digital audio value associated with the verification byte.
 10. The converter device of claim 9, the verification byte comprising a checksum based on the digital audio value associated with the verification byte.
 11. The converter device of claim 1, further comprising a memory device including a beacon file comprising information associated with the converter device, the transmitter to transmit the information repetitively to the receiving device.
 12. The converter device of claim 11, the information comprising an identification of a communication port of the receiving device to which the stream of digital audio data packets is to be transmitted.
 13. The converter device of claim 11, the information comprising an identification of a venue at which the converter device is located.
 14. A method for redundant, low-latency transmission of one or more digital audio streams, the converter device, the method comprising: receiving an analog audio signal; digitizing the analog audio signal into a stream of digital audio samples; encoding the digital audio samples into a stream of digital audio values forming a sequence of digital audio values, each digital audio value having an audio-value position, the audio-value position indicating a position of the digital audio value in the sequence; generating, using at least one processor of a machine, a stream of digital audio data packets from the stream of digital audio values, each of the digital audio data packets including a current digital audio value and a plurality previous digital audio values of the stream of digital audio values where, for each of the digital audio data packets, each of the plurality of previous digital audio values precede the current digital audio value in the sequence of digital audio values by a respective prime number of digital-audio positions, such that in each of the digital audio data packets the plurality of previous digital audio values each have a different audio-value position for interference resistance to a periodic noise or communication source; and transmitting the stream of digital audio data packets to a receiving device.
 15. A non-transitory computer-readable medium comprising instructions for receiving redundant low-latency transmission of one or more digital audio streams, the instructions, when executed on at least one processor of a mobile communication device, cause the mobile communication device to: receive a plurality of encoded audio values comprising multiple copies of each of a sequence of encoded audio values representing an audio signal, each of the sequential encoded audio values having an audio-value position, the audio-value position indicating a position of the encoded audio value in the sequence, and at least one of the multiple copies of an encoded audio value is received in a data packet that includes a plurality of encoded audio values in the sequence, the plurality of encoded audio values including a current encoded audio value and a plurality of previous encoded audio values each having an audio-value position that precedes the current encoded audio value in the sequence by a respective prime number of audio-value positions, such that each of the plurality of previous encoded audio values have a different audio-value position for interference resistance to a periodic noise or communication source; store one of the multiple copies of each of the sequence of encoded audio values in a first buffer; decode each stored copy of each of the sequence of encoded audio values to generate a stream of digital audio samples; store each of the stream of digital audio samples in a queue; and forward the stream of digital audio samples from the queue for presentation to a user of the mobile communication device.
 16. The non-transitory computer-readable medium of claim 15, the instructions causing the mobile communication device to receive the plurality of encoded audio values from a network buffer of an operating system of the mobile communication device.
 17. The non-transitory computer-readable medium of claim 15, the instructions causing the mobile communication device to store the digital audio samples of the stream of digital audio samples in a second buffer, the mobile communication device to fill the second buffer by some predetermined amount prior to forwarding the stream of digital audio samples.
 18. The non-transitory computer-readable medium of claim 17, the instructions causing the mobile communication device to forward the stream of digital audio samples by initiating an audio player of an operating system of the mobile communication device.
 19. The non-transitory computer-readable medium of claim 17, the instructions causing the mobile communication device to store the digital audio samples of the stream of digital audio samples in the second buffer in a separate execution thread from the storing of the stream of digital audio samples in the queue.
 20. The non-transitory computer-readable medium of claim 15, wherein the another encoded value in the sequence has an audio-value position that precedes the encoded audio value in the sequence by seven audio-value positions, such that the sequence includes six encoded audio values between the encoded audio value and the another encoded audio value and the data packet includes a copy of the encoded audio value and the another encoded audio value.
 21. A method for redundant low-latency transmission of one or more digital audio streams, the method comprising: receiving an analog audio signal; digitizing the analog audio signal into a stream of digital audio samples; encoding the digital audio samples into a stream of digital audio values forming a sequence of digital audio values, each digital audio value having an audio-value position, the audio-value position indicating a position of the digital audio value in the sequence; and providing multiple copies of each of a plurality of the digital audio values to a receiving device by transmitting a stream of digital audio data packets, the digital audio data packets generated, using at least one processor of a machine, from the stream of digital audio values, each of the digital audio data packets including a current digital audio value and a plurality of previous digital audio values of the stream of digital audio values where, for each of the digital audio data packets, each of the plurality of previous digital audio values precede the current digital audio value in the sequence of digital audio values by a respective prime number of digital-audio positions such that in each of the digital audio data packets the plurality of previous digital audio values each have a different audio-value position for interference resistance to a periodic noise or communication source.
 22. The method of claim 21, wherein the respective number of digital-audio positions is selected from a non-repeating sequence of numbers. 